import {
    useMemo,
    useState,
} from "react";

export function useStateAnimation(
    parentSetState: (v: boolean) => void,
    delay: number = 300
): [boolean, (v: boolean) => void, () => void] {
const [state, setState] = useState(true);
const [innerClose, unmount] = useMemo(() => {
    let timer: number;
    let innerclose = (v: boolean) => {
    setState(v);
    timer = window.setTimeout(() => {
        parentSetState(v);
        setState(true);
    }, delay);
    };
    let unmount = () => window.clearTimeout(timer);
    return [innerclose, unmount];
}, [setState, parentSetState, delay]);
return [state, innerClose, unmount];
}